package com.itcast.demo.tokkit;

import java.util.Arrays;

/**
 * @author zheng.zhang
 */
public class ReverseArrayTest {

    public static void main(String[] args) {
        ReverseArrayTest test = new ReverseArrayTest();
        int[] arr = {1, 2, 3, 4, 5, 6};
        int[] solveArr = test.solve(6, 7, arr);
        System.out.println(Arrays.toString(solveArr));
    }

    /**
     * 旋转数组
     *
     * @param n int整型 数组长度
     * @param m int整型 右移距离
     * @param a int整型一维数组 给定数组
     * @return int整型一维数组
     */
    public int[] solve(int n, int m, int[] a) {
        int temp = m % n;
        // [6, 5, 4, 3, 2, 1]
        reverseArr(a, 0, n - 1);
        // [5, 6, 4, 3, 2, 1]
        reverseArr(a, 0, temp - 1);
        // [5, 6, 1, 2, 3, 4]
        reverseArr(a, temp, n - 1);
        return a;
    }

    /**
     * 反转指定区间段的数组元素
     *
     * @param arr   数组
     * @param start 开始索引
     * @param end   结束索引
     */
    private void reverseArr(int[] arr, int start, int end) {
        while (start < end) {
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
            start++;
            end--;
        }
    }
}
